/*
 * Titulo: Consultas.java
 * Autor: Oswaldo Ceballos Zavala (Inu)
 * Descripcion: Clase para consultas de resultados de la prueba enlace locales
 * (YUCATAN) y nacionales.
 * 
 * Universidad Autonoma de Yucatan
 * 
 */
package util;

import java.util.ArrayList;
import modelo.Escuela;

/**
 * Clase Consulyas
 * 
 * @author Oswaldo.C
 */
public class Consultas {

    //Constantes de clase
    public static final int CONSULTA_MAYOR = 0;
    public static final int CONSULTA_MAYOR_IGUAL = 1;
    public static final int CONSULTA_IGUAL = 2;
    public static final int CONSULTA_MENOR_IGUAL = 3;
    public static final int CONSULTA_MENOR = 4;

    /**
     * 
     * @param escuelas Un ArrayList de elementos Escuela
     * @param tipoConsulta el tipo de consulta deseada
     *  
     * @return Un ArrayList de elementos Escuela cuyo promedio satisface el criterio
     * deseado.
     */
    
    
    public ArrayList<Escuela> consulta( ArrayList<Escuela> escuelas, int tipoConsulta, double filtro) {


        ArrayList<Escuela> result = new ArrayList<Escuela>();
        
        int menor = -1;
        
        if ( tipoConsulta == Consultas.CONSULTA_IGUAL ){
            
            for (int i = 0; i < escuelas.size(); i++ ){
               if (escuelas.get(i).getPromedioGeneral() == filtro){
                   menor = i;
                   break;
               } 
            }
            
            if (menor != -1)
               for (int i = menor; i < escuelas.size() && escuelas.get(i).getPromedioGeneral() == filtro; i++ ){
                   Escuela e = new Escuela (escuelas.get(i).getEntidad(), escuelas.get(i).getClaveEscuela(), escuelas.get(i).getNombreEscuela(), escuelas.get(i).getPromedioGeneral());
                   result.add(e);
               }
       }
            
        //
        else if (tipoConsulta == Consultas.CONSULTA_MAYOR ){
           for (int i = 0; i < escuelas.size(); i++ ){
               if (escuelas.get(i).getPromedioGeneral() > filtro){
                   menor = i;
                   break;
               } 
            }
            
            if (menor != -1)
               for (int i = menor; i < escuelas.size() && escuelas.get(i).getPromedioGeneral() > filtro; i++ ){
                   Escuela e = new Escuela (escuelas.get(i).getEntidad(), escuelas.get(i).getClaveEscuela(), escuelas.get(i).getNombreEscuela(), escuelas.get(i).getPromedioGeneral());
                   result.add(e);
               }
        }
           
        else if ( tipoConsulta == Consultas.CONSULTA_MAYOR_IGUAL ){
           
            for (int i = 0; i < escuelas.size(); i++ ){
               if (escuelas.get(i).getPromedioGeneral() >= filtro){
                   menor = i;
                   break;
               } 
            }
            
            if (menor != -1)
               for (int i = menor; i < escuelas.size() && escuelas.get(i).getPromedioGeneral() >= filtro; i++ ){
                   Escuela e = new Escuela (escuelas.get(i).getEntidad(), escuelas.get(i).getClaveEscuela(), escuelas.get(i).getNombreEscuela(), escuelas.get(i).getPromedioGeneral());
                   result.add(e);
               }
           
            
        }
        else if ( tipoConsulta == Consultas.CONSULTA_MENOR ){
           
            for (int i = 0; i < escuelas.size(); i++ ){
               if (escuelas.get(i).getPromedioGeneral() < filtro){
                   menor = i;
                   break;
               } 
            }
            
            if (menor != -1)
               for (int i = menor; i < escuelas.size() && escuelas.get(i).getPromedioGeneral() < filtro; i++ ){
                   Escuela e = new Escuela (escuelas.get(i).getEntidad(), escuelas.get(i).getClaveEscuela(), escuelas.get(i).getNombreEscuela(), escuelas.get(i).getPromedioGeneral());
                   result.add(e);
               }
           
        } 
        else{
            
            for (int i = 0; i < escuelas.size(); i++ ){
               if (escuelas.get(i).getPromedioGeneral() <= filtro){
                   menor = i;
                   break;
               } 
            }
            
            if (menor != -1)
               for (int i = menor; i < escuelas.size() && escuelas.get(i).getPromedioGeneral() <= filtro; i++ ){
                   Escuela e = new Escuela (escuelas.get(i).getEntidad(), escuelas.get(i).getClaveEscuela(), escuelas.get(i).getNombreEscuela(), escuelas.get(i).getPromedioGeneral());
                   result.add(e);
               }
            
            
        }
        

        return result;
    }
    

} //fin clase Consultas
